C++ GUI Window position - c++

I have a GUi, written in C++/CLI . I want one specific window of it to open on a specific position (right top corner) of my display.
How can I implement this?

BOOL WINAPI SetWindowPos(
__in HWND hWnd,
__in_opt HWND hWndInsertAfter,
__in int X,
__in int Y,
__in int cx,
__in int cy,
__in UINT uFlags
);
More info on msdn.

http://www.winprog.org/tutorial/ -- That will teach you how to make a GUI for Windows only in window's native GUI implement (API).
To implement your code you need to respond to a user's action, i.e clicks a button then
do i = 1+1;

Related

c++ ui automation - click a button programmatically

I need to click on the "I Agree" button in the below code programmatically, could you please help? is this possible to use SendMessage(hButton, BM_CLICK, 0, 0); ?
typedef HRESULT STDAPICALLTYPE AcquireDeveloperLicense(
_In_opt_ HWND hwndParent,
_Out_ FILETIME *pExpiration
);
HINSTANCE hDll = LoadLibrary(TEXT("WSClient.dll"));
AcquireDeveloperLicense *acquire_license = (AcquireDeveloperLicense*)GetProcAddress(hDll, "AcquireDeveloperLicense");
FILETIME pExpiration = {};
HWND hwnd = GetConsoleWindow();
HRESULT result = acquire_license(hwnd, &pExpiration);

Which module implements CreateWindowW on Windows?

I just came across issue in my application where i need to get static address of CreateWindowW function. Just like this:
&ShowWindow;
However, when doing the same trick with CreateWindowW, i get compiler error Identifier "CreateWindowW" is undefined (it's a macro). I actually cannot find where this function is defined (which DLL) and even pinvoke.net does not mention this.
On some website there is a mention it is user32.dll, but GetProcAddress for my function inside it returns null pointer. I am lost, which module on Windows is linked for this function?
If i try to connect debugger and trace call to this function, Visual Studio makes "Step over" it so i cannot understand where the call goes to..
My build is UNICODE. WinUser.h text i can see:
#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#ifdef UNICODE
#define CreateWindow CreateWindowW
#else
#define CreateWindow CreateWindowA
#endif // !UNICODE
CreateWindowExW is exported by user32.dll. You can just check the documentation. Or you can check the exports via e.g. Microsoft's dumpbin tool.
> dumpbin /exports c:\windows\system32\user32.dll | find /i "CreateWindow"
1618 6D 0000A230 CreateWindowExA
1619 6E 000107B8 CreateWindowExW
1620 6F 00041530 CreateWindowStationA
1621 70 000014D0 CreateWindowStationW
CreateWindowW is a thin wrapper implemented as a macro, according to its documentation:
” CreateWindow is implemented as a call to the CreateWindowEx function, as shown below.
#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#ifdef UNICODE
#define CreateWindow CreateWindowW
#else
#define CreateWindow CreateWindowA
#endif
You can also check that by e.g. “Go to definition” in Visual Studio.
If you open the CreateWindow documentation on MSDN and scroll down, you will see that it is implemented as a wrapper around CreateWindowEx. And if you open the CreateWindowEx doc and scroll down, you'll see this:
So it's implemented in User32.dll.

How to change the window rect without redrawing it

I want to change the height of an edit control window at 1st and then visualize the change through calling AnimateWindow function. But it doesn't seems to work. What should I do for this?
Use MoveWindow with bRepaint=FALSE
BOOL WINAPI MoveWindow(
_In_ HWND hWnd,
_In_ int X,
_In_ int Y,
_In_ int nWidth,
_In_ int nHeight,
_In_ BOOL bRepaint // <-- FALSE
);

How to set the window's default position?

I'm using Dev C++. After I created a windows application, it generated some code which creates a window. I understand the code broadly. I've found the code to set the size, title, and background color but how do I set up the default position of the new window? I want to start it at the center of the screen.
You should have CreateWindow function, its definition is as follows:
HWND WINAPI CreateWindow(
__in_opt LPCTSTR lpClassName,
__in_opt LPCTSTR lpWindowName,
__in DWORD dwStyle,
__in int x,
__in int y,
__in int nWidth,
__in int nHeight,
__in_opt HWND hWndParent,
__in_opt HMENU hMenu,
__in_opt HINSTANCE hInstance,
__in_opt LPVOID lpParam
);
The x and y parameters specify the location of the newly-created window. These are the ones you need to set.

C++ don't display in the taskbar a window created with CreateWindow [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
Windows Taskbar API
Win32: How to hide 3rd party windows in taskbar by hWnd
How can I prevent window from showing in the taskbar after I created it with CreateWindow? (Is there any parameter that allows me to do this, or something?)
set 'dwStyle' to WS_POPUP, the third argument:
HWND WINAPI CreateWindow(
__in_opt LPCTSTR lpClassName,
__in_opt LPCTSTR lpWindowName,
__in DWORD dwStyle,
__in int x,
__in int y,
__in int nWidth,
__in int nHeight,
__in_opt HWND hWndParent,
__in_opt HMENU hMenu,
__in_opt HINSTANCE hInstance,
__in_opt LPVOID lpParam);
If you're doing win32, I suggest, for your own sanity, you give Qt a try.
ITaskbarList::DeleteTab will also remove a window from the taskbar.